package com.culture.bootdemo.designPattern设计模式.responsibilityChain责任链;

import com.culture.bootdemo.designPattern设计模式.responsibilityChain责任链.handler.HandleIntercept;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.Map;

/**
 * @Author: wen
 * @DateTime: 2023/8/24 14:32
 * @Description:
 **/
@Component
public class HandleChainService {

    /**
     * 执行顺序方式一：
     * 此处顺序用order注解形式，Spring的ioc容器，支持通过Map或者List来直接注入对象，省去自己排序
     */
    /*@Autowired
    private List<HandleIntercept> handleList;*/

    /**
     * 执行顺序方式二:
     * 不使用@order注解
     */
    @Autowired
    private Map<String, HandleIntercept> handleMap;



    /**
     * 执行处理
     *
     * @param context
     * @return
     */
    public void execute(OrderVO context) {
        /*for (HandleIntercept handleIntercept : handleList) {
            handleIntercept.handle(context);
        }*/

        for (HandleEnum approvalStatus : HandleEnum.values()) {
            handleMap.get(approvalStatus.getDesc()).handle(context);
        }
    }

}
